package Juego;


public abstract class Robot{
	
	private Juego juego;
	private int combustible;
	private Posicion posicion;
	private Mapa mapa;
	
	public  Robot(Posicion p,int combustible, Mapa mapa,Juego juego) {
		this.combustible=combustible;
		this.mapa=mapa;
		this.posicion=p;
		this.juego=juego;	
	}
	
	public void girarIzquierda() {
		
		switch(posicion.getMira()){
			
			case 'n' : posicion.setMira('o');
				break;
			
			case 'o' : posicion.setMira('s');
			break;
			
			case 's' : posicion.setMira('e');
			break;
			
			case 'e' : posicion.setMira('n');
			break;	
		}
	}
	
	public void girarDerecha() {
	
		switch(posicion.getMira()){
		
			case 'o' : posicion.setMira('n');
			break;
		
			case 's' : posicion.setMira('o');
			break;
		
			case 'e' : posicion.setMira('s');
			break;
		
			case 'n' : posicion.setMira('e');
			break;	
		}
	}
	
	public boolean avanzar() {
		boolean salida=false;
		if (mapa.puedeAvanzar(posicion)){
			
			switch(posicion.getMira()){
		
			case 'n' : posicion.setY(posicion.getY()-1);
				break;
		
			case 'o' : posicion.setX(posicion.getX()-1);
				break;
		
			case 's' : posicion.setY(posicion.getY()+1);
				break;
		
			case 'e' : posicion.setX(posicion.getX()+1);
				break;
			}
			
			combustible=combustible-mapa.consumo(posicion);
			
			if (mapa.llegoAlFinal(posicion))
				juego.finDeJuego(true);
			
			if (combustible<=0)
				juego.finDeJuego(false);
			
			salida = true;
		}
		return salida;
	}
	
	public void recolectar() {
	
	}
	
	public void descargar() {
	
	}
	
	public void pintar(String color) {
	
	}
	
	public Posicion getPosicion() {
		return posicion;
	}
	
	public int getCombustible(){
		return combustible;
	}
	
	public abstract void incrementarBalas(int balas);
	
	public abstract void disparar();
	
	public abstract int getBalas();
	
}
